SnowflakeからSlackの特定のチャンネルにSYSTEM$SEND_EMAIL()を使って通知を送ってみた

SnowflakeからSlackの特定のチャンネルにSYSTEM$SEND_EMAIL()を使って通知を送ってみた

Clock Icon2024.11.27

さがらです。

私もよくチェックしているSelect Labs社のブログにて、Alerts & Notifications in Snowflake (Updated for 2024) という記事が2024年1月に出ていました。

https://select.dev/posts/snowflake-alerts#how-to-send-notifications-to-slack-from-snowflake

この記事の中で、SnowflakeからSlackの特定のチャンネルにSYSTEM$SEND_EMAIL()を使って通知を送る方法の記載がありましたので、私も実際にやってみたいと思います。

Slackチャンネルのメールアドレスの取得

まず、通知を送りたいSlackのチャンネルから右上の設定を編集するから、インテグレーションタブを開き、このチャンネルにメールを送信するを押します。

2024-11-27_14h06_42

2024-11-27_14h07_32

メールアドレスを取得するを押し、表示されたメールアドレスをコピーします。

2024-11-27_14h08_15

2024-11-27_14h09_17

Snowflakeでユーザーを作成

次に、Snowflakeからメールを送ることが出来るのはユーザーとして登録されたメールアドレスだけのため、先ほど取得したメールアドレスを用いて任意のユーザーを作成します。

※余談:現在はTYPEの指定ができるため、type = serviceとすることでパスワードも発行されずSlackでのメッセージ送信のためだけに用いるユーザーと出来る…と思って一度試したのですが、メールアドレスの確認メッセージを送ることが出来ず…

create user <任意のユーザー名>
    type = person
    default_role = public
    password = '<任意のパスワード>'
    must_change_password = true
    email = '<取得したアドレス>';

この後、作成したユーザーでログインし、ProfileからResend verification emailを押します。

2024-11-27_14h49_51

すると、下図のようにSlackチャンネルにメッセージが飛ぶので、VALIDATE YOUR EMAILを押します。

2024-11-27_14h51_25

押した後に、下図のような画面が表示されればOKです。

2024-11-27_14h52_26

type=emailのNOTIFICATION INTEGRATIONを作成

次に、SYSTEM$SEND_EMAIL()を使うにはtype = emailのNOTIFICATION INTEGRATIONが必要のため、作成します。

create notification integration <任意の名称>
  type = email
  enabled = true;

SYSTEM$SEND_EMAIL()でSlackへメッセージを送信

これまでの工程で準備は整ったので、実際にSYSTEM$SEND_EMAIL()を使ってSlackにメッセージを送信してみたいと思います。

call system$send_email(
    '<作成したNOTIFICATION INTEGRATIONの名称>',
    '<Slackチャンネルのメールアドレス>',
    '<メールのタイトル>',
    '<メールの本文>' 
);

すると、下図のようにSlackにメッセージが送信されました!本文では\nを入れると改行も出来ます。

2024-11-27_15h02_25

2024-11-27_15h02_49

あとは、SYSTEM$SEND_EMAIL()を各種通知に使っていけばOKです!

最後に

Select Labs社のブログに記載されていた内容に沿って、SnowflakeからSlackの特定のチャンネルにSYSTEM$SEND_EMAIL()を使って通知を送ることをやってみました。

SnowflakeからSlackに連携して通知するには色々な方法があるのですが、この方法が一番簡単に実現出来ると思います!気になった方はぜひやってみてください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.